package com.gzist.aidemo.controller;

import com.gzist.aidemo.entity.DTO.WsMessage;
import com.gzist.aidemo.entity.Result;
import com.gzist.aidemo.entity.DTO.ImageRequestDTO;
import com.gzist.aidemo.service.AIService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * AI功能系列接口层
 */
@RestController
@RequestMapping("/ai")
@Api(tags = "AI功能接口模块")
public class AIController {
    @Autowired
    private AIService aiService;


    /**
     * POST 接口，接收 WsMessage 对象，调用 AI 对话 API，并返回完整的响应内容
     *
     * @param wsMessage 客户端发送的消息体
     * @return AI 模型的完整响应内容
     */
    @PostMapping("/chat")
    @ApiOperation(value = "AI文本对话", notes = "根据ai提示词进行对话内容回复(既可以是一句用户提示词也可以是上下文会话列表)")
    public Result<String> getCompleteResponse(@RequestBody @ApiParam("接口参数") WsMessage wsMessage) {
        return Result.success(aiService.getCompleteChatResponse(wsMessage), "请求成功！");
    }

    /**
     * 生成图片接口
     *
     * @param imageRequestDTO 接口参数，包括图片描述的文本提示词，图片尺寸，输出图片数量等
     * @return List<String> 包含图片 URL 的集合
     */
    @PostMapping("/generateImage")
    @ApiOperation(value = "AI图片生成", notes = "根据ai提示词进行图片生成")
    public Result<List<String>> generateImage(@RequestBody @ApiParam("接口参数") ImageRequestDTO imageRequestDTO) {
        try {
            return Result.success(aiService.generateImage(imageRequestDTO), "图片生成成功！");
        } catch (Exception e) {
            return Result.error("图片生成失败，请重试");
        }
    }
}